#ifndef __NODE_HPP__
#define __NODE_HPP__

#include <cstring>

template <int node_size, typename KeyT, typename DataT>
struct Node
{
    typedef TreeElement<KeyT, DataT> ElmtType;

    Node() : _addr(0), _less(0), _size(0), _parent(0) {
        ::memset(&_elements, 0, sizeof(ElmtType) * node_size);
    }

    ~Node() {}

    int add(const KeyT &key, const DataT &data);
    int add(const ElmtType &element);
    void removeAt(int index);
    void clear();

    bool hasChilds() const;
    bool isEmpty() const;

    int _addr;
    int _less;
    int _size;
    int _parent;
    ElmtType _elements[ node_size ];
};

template<int node_size, typename KeyT, typename DataT>
int Node<node_size, KeyT, DataT>::add(const KeyT &key, const DataT &data)
{

}

#endif
